load("@prysm//tools/go:def.bzl", "go_library")
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_test")
load("@io_bazel_rules_docker//go:image.bzl", "go_image")
load("@io_bazel_rules_docker//container:container.bzl", "container_bundle", "container_image")
load("@io_bazel_rules_docker//contrib:push-all.bzl", "docker_push")

go_library(
    name = "go_default_library",
    srcs = [
        "log.go",
        "main.go",
        "usage.go",
    ],
    importpath = "github.com/prysmaticlabs/prysm/cmd/slasher",
    visibility = ["//slasher:__subpackages__"],
    deps = [
        "//cmd/slasher/flags:go_default_library",
        "//shared/cmd:go_default_library",
        "//shared/debug:go_default_library",
        "//shared/featureconfig:go_default_library",
        "//shared/journald:go_default_library",
        "//shared/logutil:go_default_library",
        "//shared/tos:go_default_library",
        "//shared/version:go_default_library",
        "//slasher/db:go_default_library",
        "//slasher/node:go_default_library",
        "@com_github_joonix_log//:go_default_library",
        "@com_github_sirupsen_logrus//:go_default_library",
        "@com_github_urfave_cli_v2//:go_default_library",
        "@com_github_x_cray_logrus_prefixed_formatter//:go_default_library",
    ],
)

go_test(
    name = "go_default_test",
    size = "small",
    srcs = ["usage_test.go"],
    embed = [":go_default_library"],
    visibility = ["//slasher:__pkg__"],
    deps = [
        "//shared/featureconfig:go_default_library",
        "//shared/testutil/assert:go_default_library",
        "@com_github_urfave_cli_v2//:go_default_library",
    ],
)

go_image(
    name = "image",
    base = "//tools:cc_image",
    binary = ":slasher",
    tags = ["manual"],
    visibility = ["//slasher:__pkg__"],
)

container_image(
    name = "image_with_creation_time",
    base = "image",
    stamp = True,
    visibility = ["//slasher:__pkg__"],
)

container_bundle(
    name = "image_bundle",
    images = {
        "gcr.io/prysmaticlabs/prysm/slasher:latest": ":image_with_creation_time",
        "gcr.io/prysmaticlabs/prysm/slasher:{DOCKER_TAG}": ":image_with_creation_time",
        "index.docker.io/prysmaticlabs/prysm-slasher:latest": ":image_with_creation_time",
        "index.docker.io/prysmaticlabs/prysm-slasher:{DOCKER_TAG}": ":image_with_creation_time",
    },
    tags = ["manual"],
    visibility = ["//slasher:__pkg__"],
)

docker_push(
    name = "push_images",
    bundle = ":image_bundle",
    tags = ["manual"],
    visibility = ["//slasher:__pkg__"],
)

go_binary(
    name = "slasher",
    embed = [":go_default_library"],
    visibility = [
        "//endtoend:__pkg__",
        "//slasher:__subpackages__",
    ],
)
